<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Compiling and Installing Apache</TITLE>
</HEAD>

<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
 BGCOLOR="#FFFFFF"
 TEXT="#000000"
 LINK="#0000FF"
 VLINK="#000080"
 ALINK="#FF0000"
>
<!--#include virtual="header.html" -->
<h1 ALIGN="CENTER">Compiling and Installing Apache</h1>
<h2>Downloading Apache</h2>
<p>Information on the latest version of Apache can be found on the Apache
web server at http://www.apache.org/. This will list the current release,
any more recent beta-test release, together with details of mirror
web and anonymous ftp sites.</p>

UnixWare users will want to consult <A HREF="unixware.html">build notes</A>
for various UnixWare versions before compiling.

<h2>Compiling Apache</h2>
This release of Apache supports the notion of `optional modules'.
However, the server has to know which modules are compiled into it, in
order for those modules to be effective; this requires generation of a
short bit of code (`<code>modules.c</code>') which simply has a list of them.
<p>
If you are satisfied with our standard module set, and expect to
continue to be satisfied with it, then you can just edit the stock
<code>Makefile</code> and compile as you have been doing previously.  If you
would
like to select optional modules, however, you need to run the
configuration script.
<p>
To do this:
<ol>
<li>Edit the file `<code>Configuration</code>'.  This contains the per-machine
config settings of the Makefile, and also an additional section at
the bottom which lists the modules which have been compiled in, and
also names the files containing them.  You will need to:
<ol>
<li> Select a compiler and compilation options as appropriate to
your machine.
<li> Uncomment lines corresponding to those optional modules you wish
to include (among the Module lines at the bottom of the file)
or add new lines corresponding to custom modules you have written.
<p>
Note that DBM auth has to be explicitly configured in, if you want
it; just uncomment the corresponding line.
</ol>
<li> Run the `Configure' script:
<blockquote><code>
% Configure<br>
Using 'Configuration' as config file<br>
%</code></blockquote>

This generates new versions of the Makefile and of modules.c.  If
you want to maintain multiple configurations, you can say, e.g.,
<blockquote><code>
% Configure -file Configuration.ai<br>
Using alternate config file Configuration.ai<br>
%</code></blockquote>

<li>Type `make'.
<p>
The modules we place in the Apache distribution are the ones we have
tested and are used regularly by various members of the Apache
development group.  Additional modules contributed by members or third
parties with specific needs or functions are available at
<A HREF="http://www.apache.org/dist/contrib/modules/">&lt;URL:http://www.apache.org/dist/contrib/modules/&gt;</A>.  There are instructions on that page for
linking these modules into the core Apache code.
</ol>

<h2>Installing Apache</h2>
After compilation, you will have a binary called `httpd' in the
<code>src/</code> directory.  A binary distribution of Apache will supply this
file.
<p>
The next step is to edit the configuration files for the server.  In
the subdirectory called `conf' you should find distribution versions
of the three configuration files: <code>srm.conf-dist</code>,
<code>access.conf-dist</code> and <code>httpd.conf-dist</code>. Copy them to
<code>srm.conf</code>, <code>access.conf</code> and <code>httpd.conf</code>
respectively.
<p>
First edit <code>httpd.conf</code>.  This sets up general attributes about the
server; the port number, the user it runs as, etc.  Next edit the
<code>srm.conf</code> file; this sets up the root of the document tree,
special functions like server-parsed HTML or internal imagemap parsing, etc.
Finally, edit the <code>access.conf</code> file to at least set the base cases
of access.
<p>
Finally, make a call to httpd, with a -f to the full path to the
httpd.conf file.  I.e., the common case:
<blockquote><code>
  /usr/local/etc/apache/src/httpd -f /usr/local/etc/apache/conf/httpd.conf
</code></blockquote>
The server should be now running.
<p>
By default the <code>srm.conf</code> and <code>access.conf</code> files are
located by name; to specifically call them by other names, use the
<A HREF="mod/core.html#accessconfig">AccessConfig</A> and
<A HREF="mod/core.html#resourceconfig">ResourceConfig</A> directives in
<code>httpd.conf</code>.

<!--#include virtual="footer.html" -->
</BODY>
</HTML>
